<?php

namespace WebmanGrpc\Module;

/**
 * 模块接口
 * 
 * 所有模块必须实现此接口
 */
interface ModuleInterface
{
    /**
     * 获取模块名称
     * 
     * @return string 模块名称
     */
    public function getName(): string;
    
    /**
     * 获取模块版本
     * 
     * @return string 模块版本
     */
    public function getVersion(): string;
    
    /**
     * 获取模块依赖
     * 
     * @return array 模块依赖列表
     */
    public function getDependencies(): array;
    
    /**
     * 初始化模块
     * 
     * @param array $config 配置选项
     * @return void
     */
    public function initialize(array $config = []): void;
    
    /**
     * 启动模块
     * 
     * @return void
     */
    public function start(): void;
    
    /**
     * 停止模块
     * 
     * @return void
     */
    public function stop(): void;
    
    /**
     * 获取模块状态
     * 
     * @return array 模块状态信息
     */
    public function getStatus(): array;
}